package cn.tiger.pojo.domain;

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

import jakarta.persistence.*;
import java.time.LocalDateTime;

/**
 * 用户实体类
 * 
 * 对应数据库表user，存储用户基本信息和认证相关数据
 * 使用JPA注解进行对象关系映射，支持用户注册、登录、角色管理等功能
 * 
 * @author AI Backend Team
 * @version 1.0
 * @since 2025-09-26
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "user")
public class User {
    /**
     * 用户唯一标识
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 用户名
     */
    @Column(name = "username", unique = true, nullable = false, length = 50)
    private String username;

    /**
     * 密码（加密存储）
     */
    @Column(name = "password", nullable = false, length = 100)
    private String password;

    /**
     * 用户角色（USER-普通用户，ADMIN-管理员）
     */
    @Column(name = "role", length = 20)
    private String role;

    /**
     * 注册时间
     */
    @Column(name = "create_time")
    private LocalDateTime createTime;

    /**
     * 最后登录时间
     */
    @Column(name = "last_login_time")
    private LocalDateTime lastLoginTime;

    /**
     * 状态（1-正常，0-禁用）
     */
    @Column(name = "status")
    private Byte status;

    /**
     * 当前会员类型（FREE-免费用户，VIP-会员用户）
     */
    @Column(name = "membership_type", length = 20)
    private String membershipType = "FREE";

    /**
     * 会员到期时间
     */
    @Column(name = "membership_expire_time")
    private LocalDateTime membershipExpireTime;
}
